package com.youdianda.service.impl;


import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youdianda.constant.MessageConstant;
import com.youdianda.dto.YddTagDto;
import com.youdianda.entity.YddTag;
import com.youdianda.mapper.YddTagMapper;
import com.youdianda.result.Result;
import com.youdianda.service.IYddTagService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author sdy
 * @since 2023-05-15
 */
@Service
public class YddTagServiceImpl extends ServiceImpl<YddTagMapper, YddTag> implements IYddTagService {


    /**
     * 标签列表-全部
     *
     * @return
     */
    @Override
    public Result all() {
        List<YddTag> list = list();
        return Result.success(list);
    }

    /**
     * 标签详情
     *
     * @param id
     * @return
     */
    @Override
    public Result details(Integer id) {

        YddTag yddTag = getById(id);

        return Result.success(yddTag);
    }

    /**
     * 标签列表-分页
     *
     * @param yddTagDto
     */
    @Override
    public Result getYddTagIPage(YddTagDto yddTagDto) {
        //非空判断，判断页码和每页显示记录数量是否为空
        if (yddTagDto.getPage() == null){
            return Result.error(MessageConstant.UNKNOWN_ERROR);
        }
        if(yddTagDto.getLimit() == null){
            return Result.error(MessageConstant.UNKNOWN_ERROR);
        }
        IPage<YddTag> ipage = new Page<>(yddTagDto.getPage(), yddTagDto.getLimit());
        LambdaQueryWrapper<YddTag> queryWrapper= Wrappers.lambdaQuery();
        if(yddTagDto.getTagname()!=null && !yddTagDto.getTagname().equals("")){
            queryWrapper.like(YddTag::getTagname,yddTagDto.getTagname());
        }
        IPage<YddTag> resultPage = page(ipage,queryWrapper);

        Map map=new HashMap();
        map.put("count",resultPage.getTotal());
        map.put("currentPage",resultPage.getCurrent());
        map.put("data",resultPage.getRecords());
        map.put("pageSize",resultPage.getSize());
        map.put("totalPages",resultPage.getPages());

        return Result.success(map);
    }

    /**
     * 标签删除
     *
     * @param id
     * @return
     */
    @Override
    public Result deleteById(Integer id) {


        boolean removeById = removeById(id);

        return Result.success(removeById);
    }

    /**
     * 标签修改
     *
     * @param yddTag
     * @return
     */
    @Override
    public Result upDate(YddTag yddTag) {

        boolean updateById = updateById(yddTag);

        return Result.success(updateById);
    }

    /**
     * 标签添加
     *
     * @param yddTag
     * @return
     */
    @Override
    public Result add(YddTag yddTag) {

        yddTag.setDefaultData("1");
        boolean save = save(yddTag);
        return Result.success(save);
    }



}
